<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen">
</head>
<body>
    <div class="entry"> 
 <p><a name="客户端全局变量"></a>这里的 <strong>客户端全局变量</strong> 不要与MQL4程序中定义的 <strong><a href="372.html#Global_variables" target="_blank">全局变量</a></strong> 混淆。</p> 
 <p>最后访问的 "客户端全局变量" 可以在客户端内保存4个星期，然后将自动删除。对于 "客户端全局变量" 的访问不仅仅是新值的设定，也可以对其进行读取。</p> 
 <p>在客户端启动的所有MQL4程序可以同时访问 "客户端全局变量"。</p> 
 <ul> 
  <li><strong><a href="#GlobalVariableCheck">GlobalVariableCheck()</a></strong> – 检查全局变量是否存在 </li> 
  <li><strong><a href="#GlobalVariableDel">GlobalVariableDel()</a></strong> – 删除全局变量 </li> 
  <li><strong><a href="#GlobalVariableGet">GlobalVariableGet()</a></strong> – 获取全局变量的值 </li> 
  <li><strong><a href="#GlobalVariableName">GlobalVariableName()</a></strong> – 获取指定索引的全局变量名 </li> 
  <li><strong><a href="#GlobalVariableSet">GlobalVariableSet()</a></strong> – 设置全局变量的值 </li> 
  <li><strong><a href="#GlobalVariableSetOnCondition">GlobalVariableSetOnCondition()</a></strong> – 根据条件设置全局变量值 </li> 
  <li><strong><a href="#GlobalVariablesDeleteAll">GlobalVariablesDeleteAll()</a></strong> – 删除全部全局变量 </li> 
  <li><strong><a href="#GlobalVariablesTotal">GlobalVariablesTotal()</a></strong> – 获取全局变量总数 </li> 
 </ul> 
 <p>&nbsp;</p> 
 <h2><a name="GlobalVariableCheck"></a>GlobalVariableCheck() – 检查全局变量是否存在</h2> 
 <pre class="brush: mql4; toolbar: false;">bool GlobalVariableCheck(string name)</pre> 
 <p>如果 "<a href="#客户端全局变量">客户端全局变量</a>" 存在，返回TRUE，否则，返回FALSE。 </p> 
 <p>要获得详细的错误信息，查看 <a href="386.html#GetLastError">GetLastError()</a> 函数。 </p> 
 <p>参量:</p> 
 <pre>name - 客户端全局变量名称。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  // 使用前先检查变量
  if(!GlobalVariableCheck("g1"))
    GlobalVariableSet("g1",1);</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="GlobalVariableDel"></a>GlobalVariableDel() – 删除全局变量</h2> 
 <pre class="brush: mql4; toolbar: false;">bool GlobalVariableDel(string name)</pre> 
 <p>删除 "<a href="#客户端全局变量">客户端全局变量</a>" 。如果执行成功，返回TRUE，否则，返回FALSE。&nbsp; </p> 
 <p>参量:</p> 
 <pre>name - 客户端全局变量名称。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  //  删除名称为 "gvar_1"的客户端全局变量
   GlobalVariableDel("gvar_1");</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="GlobalVariableGet"></a>GlobalVariableGet() – 获取全局变量的值</h2> 
 <pre class="brush: mql4; toolbar: false;">double GlobalVariableGet(string name)</pre> 
 <p>返回现有的 "<a href="#客户端全局变量">客户端全局变量</a>" 的值，如果发生错误，返回0。&nbsp; </p> 
 <p>参量:</p> 
 <pre>name - 客户端全局变量名称。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  double v1=GlobalVariableGet("g1");
  //---- 检查函数调用结果
  if(GetLastError()!=0) return(false);
  //---- 继续程序</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="GlobalVariableName"></a>GlobalVariableName() – 获取指定索引的全局变量名</h2> 
 <pre class="brush: mql4; toolbar: false;">string GlobalVariableGet(int index)</pre> 
 <p>本函数通过全局变量列表中索引号返回 "<a href="#客户端全局变量">客户端全局变量</a>" 的名称。&nbsp; </p> 
 <p>参量:</p> 
 <pre>index - 全局变量列表中索引号，该索引号必须大于等于0，或者小于 <a href="#GlobalVariablesTotal">GlobalVariablesTotal()</a> 返回的值。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int    var_total=GlobalVariablesTotal();
  string name;
  for(int i=0;i&lt;var_total;i++)
    {
     name=GlobalVariableName(i);
     Print(i,": 全局变量名称 - ",name);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="GlobalVariableSet"></a>GlobalVariableSet() – 设置全局变量的值</h2> 
 <pre class="brush: mql4; toolbar: false;">datetime GlobalVariableSet(string name, double value)</pre> 
 <p>设置 "<a href="#客户端全局变量">客户端全局变量</a>" 新的值。如果它不存在，系统将创建个新的全局变量。如果函数成功，其返回值将是最后存取时间，否则，返回值将是0。</p> 
 <p>参量:</p> 
 <pre>name - 客户端全局变量名称。
value - 新的数值 </pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  //---- 尝试设定新值
  if(GlobalVariableSet("BarsTotal",Bars)==0)
    return(false);
  //---- 继续程序</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="GlobalVariableSetOnCondition"></a>GlobalVariableSetOnCondition() – 根据条件设置全局变量值</h2> 
 <pre class="brush: mql4; toolbar: false;">bool GlobalVariableSetOnCondition(string name, double value, double check_value)</pre> 
 <p>如果 "<a href="#客户端全局变量">客户端全局变量</a>" 的当前值等于第三个参数check_value，就设置现有的全局变量的新值。如果全局变量不存在，函数将产生错误ERR_GLOBAL_VARIABLE_NOT_FOUND(4058) 并且返回FALSE；当函数执行成功，返回TRUE，否则，返回FALSE。</p> 
 <p>如果全局变量的当前值与check_value不同，函数将返回FALSE。</p> 
 <p>函数为 "<a href="#客户端全局变量">客户端全局变量</a>" 提供了强大的访问能力，这就是为什么在一个客户端内同时运行的几个智能交易程序用它作为通信信号进行相互通信的原因。</p> 
 <p>参量:</p> 
 <pre>name - 客户端全局变量名称。
value - 新的数值。
check_value - 与当前全局变量的值相比较的值。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int init()
    {
     //---- 创建客户端全局变量
     GlobalVariableSet("DATAFILE_SEM",0);
     //...
    }

  int start()
    {
     //---- 尝试锁住公共资源
     while(!IsStopped())
       {
        //---- 锁住
        if(GlobalVariableSetOnCondition("DATAFILE_SEM",1,0)==true)  break;
        //---- 可以删除变量吗?
        if(GetLastError()==ERR_GLOBAL_VARIABLE_NOT_FOUND) return(0);
        //---- 等待
        Sleep(500);
       }
     //---- 资源被锁
     // ...做些工作
     //----解锁资源
     GlobalVariableSet("DATAFILE_SEM",0);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="GlobalVariablesDeleteAll"></a>GlobalVariablesDeleteAll() – 删除全部全局变量</h2> 
 <pre class="brush: mql4; toolbar: false;">int GlobalVariablesDeleteAll(void prefix_name)</pre> 
 <p>删除 "<a href="#客户端全局变量">客户端全局变量</a>"。如果全局变量名称的前缀没有指定，所有全局变量将被删除，否则，只有那些符合指定前缀开头的变量被删除。函数返回被删除的变量个数。</p> 
 <p>参量:</p> 
 <pre>prefix_name - 要被删除的全局变量名称前缀。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  Print(GlobalVariablesDeleteAll("test_")," test_为开头的变量被删除");</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="GlobalVariablesTotal"></a>GlobalVariablesTotal() – 获取全局变量总数</h2> 
 <pre class="brush: mql4; toolbar: false;">int GlobalVariablesTotal()</pre> 
 <p>获取 "<a href="#客户端全局变量">客户端全局变量</a>" 的总数。</p> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  Print(GlobalVariablesTotal(),"全局变量检测到");</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 本文地址：
 <a href="399.html" rel="bookmark"><b>399.html</b></a> 
</div>
</body>
</html>